library(tidyverse)
Registered S3 method overwritten by 'data.table':
  method           from
  print.data.table     
Registered S3 method overwritten by 'htmlwidgets':
  method           from         
  print.htmlwidget tools:rstudio
Registered S3 methods overwritten by 'dbplyr':
  method         from
  print.tbl_lazy     
  print.tbl_sql      
-- Attaching packages ---------------------------------------------------------------------------------------- tidyverse 1.3.1 --
v ggplot2 3.3.5     v purrr   0.3.4
v tibble  3.1.1     v dplyr   1.0.5
v tidyr   1.1.3     v stringr 1.4.0
v readr   2.0.1     v forcats 0.5.1
-- Conflicts ------------------------------------------------------------------------------------------- tidyverse_conflicts() --
x dplyr::filter() masks stats::filter()
x dplyr::lag()    masks stats::lag()

Inversiones

Fuentes:

  1. construir serie de inversión para atras (buscar Stock de YPF pero solo para extracción). armar ejercicio de FD y ver si las proporciones se mantienen.

Inversión a partir de Balances

Inversión a partir de Secretaria de Energía

      anio        empresa            idempresa      Área/Permiso/Concesión  idconcesion      Yacimiento       
 Min.   :2012   Length:13707       Min.   :  16.0   Length:13707           Min.   :   1.0   Length:13707      
 1st Qu.:2013   Class :character   1st Qu.: 233.0   Class :character       1st Qu.: 118.0   Class :character  
 Median :2015   Mode  :character   Median : 323.0   Mode  :character       Median : 425.0   Mode  :character  
 Mean   :2015                      Mean   : 466.9                          Mean   : 789.3                     
 3rd Qu.:2017                      3rd Qu.: 360.0                          3rd Qu.: 546.0                     
 Max.   :2019                      Max.   :1429.0                          Max.   :3690.0                     
                                                                                                              
    Cuenca           Ubicación          Provincia         Período del plan de acción Estado de la DDJJ 
 Length:13707       Length:13707       Length:13707       Length:13707               Length:13707      
 Class :character   Class :character   Class :character   Class :character           Class :character  
 Mode  :character   Mode  :character   Mode  :character   Mode  :character           Mode  :character  
                                                                                                       
                                                                                                       
                                                                                                       
                                                                                                       
   concepto         cantidad_exploracion exploracion_millones_usd cantidad_explotacion explotacion_millones_usd
 Length:13707       Min.   :   0.000     Min.   : 0.0000          Min.   :    0.000    Min.   :   0.0000       
 Class :character   1st Qu.:   0.000     1st Qu.: 0.0000          1st Qu.:    0.000    1st Qu.:   0.0280       
 Mode  :character   Median :   0.000     Median : 0.0000          Median :    0.000    Median :   0.2875       
                    Mean   :   0.781     Mean   : 0.2538          Mean   :    6.201    Mean   :   3.9194       
                    3rd Qu.:   0.000     3rd Qu.: 0.0000          3rd Qu.:    1.000    3rd Qu.:   1.7323       
                    Max.   :3043.000     Max.   :89.3530          Max.   :16000.000    Max.   :1717.0000       
                                         NA's   :4                NA's   :7            NA's   :3               
 cantidad_exploracion_complementaria exploracion_compl_millones_usd Fecha Inicio Tareas Fecha Fin Tareas
 Min.   :  0.0000                    Min.   : 0.0000                Min.   :NA          Min.   :NA      
 1st Qu.:  0.0000                    1st Qu.: 0.0000                1st Qu.:NA          1st Qu.:NA      
 Median :  0.0000                    Median : 0.0000                Median :NA          Median :NA      
 Mean   :  0.6065                    Mean   : 0.1477                Mean   :NA          Mean   :NA      
 3rd Qu.:  0.0000                    3rd Qu.: 0.0000                3rd Qu.:NA          3rd Qu.:NA      
 Max.   :876.6300                    Max.   :92.8340                Max.   :NA          Max.   :NA      
                                     NA's   :2                      NA's   :13707       NA's   :13707   
 Tipo de explotación indice_tiempo     
 Length:13707        Length:13707      
 Class :character    Class :character  
 Mode  :character    Mode  :character  
                                       
                                       
                                       
                                       

inv_anual_emp = inversiones_anio_anterior %>% 
  group_by(empresa, anio, unidad) %>% 
  summarise(inversion_anual = sum(inversion_exploracion, inversion_explotacion)) %>% 
  rbind(inversiones_2005_2012)
`summarise()` has grouped output by 'empresa', 'anio'. You can override using the `.groups` argument.
plot_inv_anual = inv_anual_emp %>% 
  ggplot(aes(anio, inversion_anual, color = empresa))+ 
  geom_line()+
  geom_point()+
  labs(title = "Inversiones por empresa (tablas dinamicas)",
       subtitle = "Extraído de tablas dinámicas",
        y = "Millones de USD",
       caption = "Secretaria de Energía")+
  theme(legend.position = "none")

# plotly::ggplotly(plot_inv_anual)
plot_inv_anual

inv_anual_emp %>% 
  ungroup() %>% 
  filter(empresa == "YPF", anio %in% 2008:2015) %>% 
  summarise(sum(inversion_anual))
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQoNCmBgYHtyfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpgYGANCg0KDQojIyBJbnZlcnNpb25lcw0KDQpGdWVudGVzOiANCg0KKiBCYWxhbmNlcyBkZSBCb2xzYXIuIEludmVyc2nDs24gY2FsY3VsYWRhIGEgcGFydGlyIGRlIHZhcmlhY2lvbmVzIGRlbCBhY3Rpdm8gKyBjb25zdW1vIGRlIGNhcGl0YWwgZmlqbyAoZXN0byDDumx0aW1vIGVzdMOhIHBlbmRpZW50ZSkNCiogU2VjcmV0YXJpYSBkZSBFbmVyZ8OtYS4gUmVzb2x1Y2nDs24gMjA1NyANCiAgKyBbSW52ZXJzaW9uZXMgcmVhbGl6YWRhcyBhw7FvIGFudGVyaW9yXShodHRwOi8vZGF0b3MubWluZW0uZ29iLmFyL2RhdGFzZXQvaW52ZXJzaW9uZXMtZW4tbWVyY2Fkby1kZS1oaWRyb2NhcmJ1cm9zLXVwc3RyZWFtL2FyY2hpdm8vMjg1ZDQ1ZTUtMWI4OC00ZGFlLThlNWMtYzAxODQzYzdjOGMwKQ0KICArIFtJbnZlcnNpb25lcyBhbnVhbGVzIHByZXZpc3RhcyBhIHJlYWxpemFyIGVuIGVsIGHDsW8gZGUgbGEgcHJlc2VudGFjacOzbiBkZSBsYSBEREpKXShodHRwOi8vZGF0b3MubWluZW0uZ29iLmFyL2RhdGFzZXQvaW52ZXJzaW9uZXMtZW4tbWVyY2Fkby1kZS1oaWRyb2NhcmJ1cm9zLXVwc3RyZWFtKQ0KDQoNCjQpIGNvbnN0cnVpciBzZXJpZSBkZSBpbnZlcnNpw7NuIHBhcmEgYXRyYXMgKGJ1c2NhciBTdG9jayBkZSBZUEYgcGVybyBzb2xvIHBhcmEgZXh0cmFjY2nDs24pLiBhcm1hciBlamVyY2ljaW8gZGUgRkQgeSB2ZXIgc2kgbGFzIHByb3BvcmNpb25lcyBzZSBtYW50aWVuZW4uIA0KDQoqIFJlY29uc3RydWNjaW9uIGRlIHNlcmllIGRlIGludmVyc2lvbiBwb3IgZW1wcmVzYQ0KdmVyIHVuIGZsdWpvIGRlIHBvem9zIHkgdW4gZmx1am8gZGUgaW52ZXJzaW9uIHkgbHVlZ28gdmVyIHNpIGxvIHF1ZSBtdWV2ZSBsYSBpbnZlcnNpb24gc29uIGxvcyBwb3pvcyAocXVlIHN1IGV2b2x1Y2lvbiBzZWEgc2ltaWxhcikuIA0KDQotIGludmVyc2lvbiBwb3IgZW1wcmVzYSAoYmFsYW5jZTogdmFyaWFjaW9uIGRlbCBhY3Rpdm8gKyBjb25zdW1vIGRlIEsgZmlqbykNCi0gaW52ZXJzaW9uIHBvciBlbXByZXNhIChzZWNyZXRhcmlhIGRlIGVuZXJnaWEpDQotIGludmVyc2lvbiBhZ3JlZ2FkYSAodGlwbyBkZSBpbnZlcnNpb24pIChjdWVudGFzIG5hY2lvbmFsZXM/KQ0KLSBwb3pvcyBudWV2b3MgcG9yIGVtcHJlc2EgcG9yIGHDsW8NCi0gcG96b3MgbnVldm9zIHRvdGFsZXMNCi0gYXBsaWNhciBNSVAgcGFyYSBZUEYgDQoNCkludmVyc2nDs24gYSBwYXJ0aXIgZGUgQmFsYW5jZXMNCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQoNCiMgaW52ZXJzaW9uZXNfZW1wcmVzYSA8LSBzdG9ja19iYWxhbmNlc19lbXByZXNhcyAlPiUNCiMgICB1bmdyb3VwKCkgJT4lIA0KIyAgIHNlbGVjdCgtYyhmdWVudGUsIHNlY3RvcikpICU+JSANCiMgICBmaWx0ZXIodmFyaWFibGUgPT0gInBweWUiKSAlPiUNCiMgICBhcnJhbmdlKGVtcHJlc2EsIGFuaW8pICU+JSANCiMgICBncm91cF9ieSh1bmlkYWQsIHZhcmlhYmxlLCBlbXByZXNhKSAlPiUNCiMgICBtdXRhdGUodmFsb3IgPSB2YXJpYWNpb25faW50ZXJhbnVhbCh2YWxvcikpDQojICAgIA0KIyAjIGludmVyc2lvbmVzX2VtcHJlc2ENCiMgDQojIGdyYWZfaW52ZXJzaW9uZXNfZW1wcmVzYSA8LSBpbnZlcnNpb25lc19lbXByZXNhICU+JSANCiMgICBmaWx0ZXIoZW1wcmVzYSAhPSAiQ2FtdXp6aSBHYXMgUGFtcGVhbmEiKSAlPiUgDQojICAgZ2dwbG90KGFlcyhhbmlvLCB2YWxvciwgY29sb3IgPSBlbXByZXNhKSkrIA0KIyAgIGdlb21fbGluZSgpKw0KIyAgIGdlb21fcG9pbnQoKSsNCiMgICBsYWJzKHRpdGxlID0gIkludmVyc2lvbmVzIHBvciBlbXByZXNhIiwNCiMgICAgICAgIHN1YnRpdGxlID0gIkEgcGFydGlyIGRlIGJhbGFuY2VzIiwNCiMgICAgICAgICB5ID0gIk1pbGxvbmVzIGRlIHBlc29zIGRlIDIwMTgiLA0KIyAgICAgICAgY2FwdGlvbiA9ICJCYWxhbmNlcyBkZSBlbXByZXNhcyBleHRyYcOtZG9zIGRlIEJvbHNhciIpKw0KIyAgIGZhY2V0X3dyYXAofnZhcmlhYmxlKQ0KIyAjIGdncGxvdGx5KGdyYWZfaW52ZXJzaW9uZXNfZW1wcmVzYSwgd2lkdGggPSA4MDAsIGhlaWdodCA9IDYwMCkNCg0KYGBgDQoNCg0KSW52ZXJzacOzbiBhIHBhcnRpciBkZSBTZWNyZXRhcmlhIGRlIEVuZXJnw61hDQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KcmF3X2RhdGEgPC0gcmVhZF9jc3YoIi4uL2RhdGEvc2VjcmV0YXJpYV9lbmVyZ2lhLzIwNTcvcmVzb2x1Y2luLTIwNTctaW52ZXJzaW9uZXMtcmVhbGl6YWRhcy1hby1hbnRlcmlvci5jc3YiLCANCiAgICBjb2xfdHlwZXMgPSBjb2xzKGBGZWNoYSBGaW4gVGFyZWFzYCA9IGNvbF9kYXRlKGZvcm1hdCA9ICIlZC8lbS8lWSIpLCANCiAgICAgICAgYEZlY2hhIEluaWNpbyBUYXJlYXNgID0gY29sX2RhdGUoZm9ybWF0ID0gIiVkLyVtLyVZIikpKSAlPiUgDQogIHJlbmFtZShhbmlvID0gIkHDsW8gZGUgcHJlc2VudGFjacOzbiBkZSBsYSBEREpKIiwNCiAgICAgICAgIGVtcHJlc2EgPSAiRW1wcmVzYSBpbmZvcm1hbnRlIiwNCiAgICAgICAgIGNvbmNlcHRvID0gIkRlc2NyaXBjacOzbiBkZWwgcGxhbiBkZSBhY2Npw7NuIChDb25jZXB0b3MpIiwNCiAgICAgICAgIGNhbnRpZGFkX2V4cGxvcmFjaW9uID0gIkNhbnQuIEV4cGxvcmFjaW9uIiwNCiAgICAgICAgIGNhbnRpZGFkX2V4cGxvdGFjaW9uID0gIkNhbnQuIEV4cGxvdGFjaW9uIiwNCiAgICAgICAgIGNhbnRpZGFkX2V4cGxvcmFjaW9uX2NvbXBsZW1lbnRhcmlhID0gIkNhbnQuIEV4cGxvcmFjaW9uIENvbXBsZW1lbnRhcmlhIiwNCiAgICAgICAgIGV4cGxvcmFjaW9uX21pbGxvbmVzX3VzZCA9ICJNaWxsb25lcyB1JHMgRXhwbG9yYWNpb24iLA0KICAgICAgICAgZXhwbG90YWNpb25fbWlsbG9uZXNfdXNkID0gIk1pbGxvbmVzIHUkcyBFeHBsb3RhY2lvbiIsDQogICAgICAgICBleHBsb3JhY2lvbl9jb21wbF9taWxsb25lc191c2QgPSAiTWlsbG9uZXMgdSRzIEV4cC4gQ29tcGxlbWVudGFyaWEiKSAlPiUgDQogIG11dGF0ZShhbmlvID0gYW5pbyAtIDEsDQogICAgICAgICBlbXByZXNhID1jYXNlX3doZW4oZW1wcmVzYSA9PSAiWVBGIFMuQS4iIH4gIllQRiIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wcmVzYSA9PSAiUEFOIEFNRVJJQ0FOIEVORVJHWSAoU1VDVVJTQUwgQVJHRU5USU5BKSBMTEMiIH4gIlBBRSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wcmVzYSA9PSAiUEFOIEFNRVJJQ0FOIEVORVJHWSBTTCIgfiAiUEFFIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXByZXNhID09ICJQRVRST0JSQVMgQVJHRU5USU5BIFMuQS4iIH4gIlBldHJvYnJhcyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wcmVzYSA9PSAiUEVTQSAoUEVUUk9CUkFTIEUuUy5BLikiIH4gIlBldHJvYnJhcyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wcmVzYSA9PSAiRU5BUCBTSVBFVFJPTCBBUkdFTlRJTkEgUy5BLiIgfiAiRU5BUCBTSVBFVFJPTCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wcmVzYSA9PSAiVklTVEEgT0lMICYgR0FTIEFSR0VOVElOQSBTQVUiIH4gIlZpc3RhIE9pbCBhbmQgR2FzIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXByZXNhID09ICJWSVNUQSBPSUwgJiBHQVMgQVJHRU5USU5BIFNBIiB+ICJWaXN0YSBPaWwgYW5kIEdhcyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wcmVzYSA9PSAiU0lOT1BFQyBBUkdFTlRJTkEgRVhQTE9SQVRJT04gQU5EIFBST0RVQ1RJT04sIElOQy4iIH4gIlNpbm9wZWMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHJlc2EgPT0gIlRFQ1BFVFJPTCBTLkEuIiB+ICJUZWNwZXRyb2wiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXByZXNhID09ICJQTFVTUEVUUk9MIFMuQS4iIH4gIlBsdXNwZXRyb2wiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHJlc2EgPT0gIlBMVVNQRVRST0wgRU5FUkdZIFMuQS4iIH4gIlBsdXNwZXRyb2wiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHJlc2EgPT0gIkNPTVBBw5HDjUEgR0VORVJBTCBERSBDT01CVVNUSUJMRVMgUy5BLiIgfiAiQ0dDIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXByZXNhID09ICJXSU5URVJTSEFMTCBFTkVSR0lBIFMuQS4iIH4gIldpbnRlcnNoYWxsIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXByZXNhID09ICJZU1VSIEVORVJHw41BIEFSR0VOVElOQSBTLlIuTC4iIH4gIllTVVIiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHJlc2EgPT0gIllTVVIgUEVUUk9MRVJBIEFSR0VOVElOQSBTLkEuIiB+ICJZU1VSIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXByZXNhID09ICJUT1RBTCBBVVNUUkFMIFMuQS4iIH4gIlRvdGFsIEF1c3RyYWwiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQgfiBlbXByZXNhKSkgIyU+JSANCiAgIyBzZWxlY3QoYW5pbywgZW1wcmVzYSwgaWRlbXByZXNhLCAgY29uY2VwdG8sDQogICMgICAgICAgIGNhbnRpZGFkX2V4cGxvcmFjaW9uLCBjYW50aWRhZF9leHBsb3RhY2lvbixjYW50aWRhZF9leHBsb3JhY2lvbl9jb21wbGVtZW50YXJpYSwNCiAgIyAgICAgICAgZXhwbG9yYWNpb25fbWlsbG9uZXNfdXNkLGV4cGxvdGFjaW9uX21pbGxvbmVzX3VzZCwgZXhwbG9yYWNpb25fY29tcGxfbWlsbG9uZXNfdXNkICkgDQoNCnVuaXF1ZShyYXdfZGF0YSRjb25jZXB0bykNCmdsaW1wc2UocmF3X2RhdGEpDQpzdW1tYXJ5KHJhd19kYXRhKQ0KDQppbnZlcnNpb25lc19hbmlvX2FudGVyaW9yIDwtIHJhd19kYXRhICU+JSANCiAgIyBmaWx0ZXIoc3RyX2RldGVjdChjb25jZXB0bywgJ3Bvem8nKSkgJT4lDQogIGdyb3VwX2J5KGVtcHJlc2EsIGFuaW8pICU+JSANCiAgc3VtbWFyaXNlKGludmVyc2lvbl9leHBsb3RhY2lvbiA9IHN1bShleHBsb3RhY2lvbl9taWxsb25lc191c2QsIG5hLnJtID0gVCksDQogICAgICAgICAgICBpbnZlcnNpb25fZXhwbG9yYWNpb24gPSBzdW0oZXhwbG9yYWNpb25fbWlsbG9uZXNfdXNkLCBuYS5ybSA9IFQpKSAlPiUgDQogIGFycmFuZ2UoLWludmVyc2lvbl9leHBsb3RhY2lvbikgJT4lIA0KICBtdXRhdGUodW5pZGFkID0gIk1pbGxvbmVzIGRlIFVTRCIpDQppbnZlcnNpb25lc19hbmlvX2FudGVyaW9yDQoNCg0KDQpgYGANCg0KDQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KcmVzb2x1Y2luXzIwNTdfaW52ZXJzaW9uZXNfcmVhbGl6YWRhc19tZW5zdWFsIDwtIHJlYWRfY3N2KCIuLi9kYXRhL3NlY3JldGFyaWFfZW5lcmdpYS8yMDU3L3Jlc29sdWNpbi0yMDU3LWludmVyc2lvbmVzLXJlYWxpemFkYXMtbWVuc3VhbC5jc3YiKQ0KDQpyZXNvbHVjaW5fMjA1N19pbnZlcnNpb25lc19maW5fY29uY2VzaW9uPC0gcmVhZF9jc3YoIi4uL2RhdGEvc2VjcmV0YXJpYV9lbmVyZ2lhLzIwNTcvcmVzb2x1Y2luLTIwNTctaW52ZXJzaW9uZXMtcmVhbGl6YWRhcy1maW4tZGUtY29uY2VzaW4uY3N2IikNCg0KcmVzb2x1Y2luXzIwNTdfaW52ZXJzaW9uZXNfZmluX2NvbmNlc2lvbiAlPiUNCiAgcmVuYW1lKGFuaW8gPSAiQcOxbyBkZSBwcmVzZW50YWNpw7NuIGRlIGxhIERESkoiLA0KICAgICAgICAgICBlbXByZXNhID0gIkVtcHJlc2EgaW5mb3JtYW50ZSIsDQogICAgICAgICAgIGNvbmNlcHRvID0gIkRlc2NyaXBjacOzbiBkZWwgcGxhbiBkZSBhY2Npw7NuIChDb25jZXB0b3MpIiwNCiAgICAgICAgICAgY2FudGlkYWRfZXhwbG9yYWNpb24gPSAiQ2FudC4gRXhwbG9yYWNpb24iLA0KICAgICAgICAgICBjYW50aWRhZF9leHBsb3RhY2lvbiA9ICJDYW50LiBFeHBsb3RhY2lvbiIsDQogICAgICAgICAgIGNhbnRpZGFkX2V4cGxvcmFjaW9uX2NvbXBsZW1lbnRhcmlhID0gIkNhbnQuIEV4cGxvcmFjaW9uIENvbXBsZW1lbnRhcmlhIiwNCiAgICAgICAgICAgZXhwbG9yYWNpb25fbWlsbG9uZXNfdXNkID0gIk1pbGxvbmVzIHUkcyBFeHBsb3JhY2lvbiIsDQogICAgICAgICAgIGV4cGxvdGFjaW9uX21pbGxvbmVzX3VzZCA9ICJNaWxsb25lcyB1JHMgRXhwbG90YWNpb24iLA0KICAgICAgICAgICBleHBsb3JhY2lvbl9jb21wbF9taWxsb25lc191c2QgPSAiTWlsbG9uZXMgdSRzIEV4cC4gQ29tcGxlbWVudGFyaWEiKSAlPiUgDQogIGdyb3VwX2J5KGFuaW8pICU+JSANCiAgc3VtbWFyaXNlKGludmVyc2lvbl9hbnVhbCA9IHN1bShleHBsb3RhY2lvbl9taWxsb25lc191c2QsIGV4cGxvcmFjaW9uX21pbGxvbmVzX3VzZCkpDQogIA0KDQpgYGANCg0KDQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KaW52ZXJzaW9uZXNfMjAwNV8yMDEyIDwtIHJlYWR4bDo6cmVhZF9leGNlbCgiLi4vZGF0YS9zZWNyZXRhcmlhX2VuZXJnaWEvMjA1Ny9pbnZlcnNpb25lc18yMDA1XzIwMTIueGxzeCIsIA0KICAgIGNvbF90eXBlcyA9IGMoIm51bWVyaWMiLCAidGV4dCIsICJ0ZXh0IiwgDQogICAgICAgICJudW1lcmljIiwgIm51bWVyaWMiLCAibnVtZXJpYyIpLCANCiAgICBza2lwID0gOCkgJT4lIA0KICByZW5hbWUocGxhbl8xcmFfc2VtYW5hID0gIlBsYW4gMcKqIFNlbS4iLA0KICAgICAgICAgcGxhbl9hbnVhbCA9ICJQbGFuIEFudWFsIiwNCiAgICAgICAgIHJlYWxpemFkb19hbnVhbCA9ICJSZWFsaXphZG8gQW51YWwiLA0KICAgICAgICAgY29uY2VwdG8gPSBDb25jZXB0bykgJT4lIA0KICBtdXRhdGUoYW5pbyA9ICB6b286Om5hLmxvY2YoYW5pbyksDQogICAgICAgICBlbXByZXNhID0gIHpvbzo6bmEubG9jZihlbXByZXNhKSwNCiAgICAgICAgIHVuaWRhZCA9ICJNaWxsb25lcyBkZSBVU0QiLA0KICAgICAgICAgZW1wcmVzYSA9Y2FzZV93aGVuKGVtcHJlc2EgPT0gIllQRiBTLkEuIiB+ICJZUEYiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHJlc2EgPT0gIlBBTiBBTUVSSUNBTiBFTkVSR1kgKFNVQ1VSU0FMIEFSR0VOVElOQSkgTExDIiB+ICJQQUUiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHJlc2EgPT0gIlBBTiBBTUVSSUNBTiBFTkVSR1kgU0wiIH4gIlBBRSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wcmVzYSA9PSAiUEVUUk9CUkFTIEFSR0VOVElOQSBTLkEuIiB+ICJQZXRyb2JyYXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHJlc2EgPT0gIlBFU0EgKFBFVFJPQlJBUyBFLlMuQS4pIiB+ICJQZXRyb2JyYXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHJlc2EgPT0gIkVOQVAgU0lQRVRST0wgQVJHRU5USU5BIFMuQS4iIH4gIkVOQVAgU0lQRVRST0wiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHJlc2EgPT0gIlZJU1RBIE9JTCAmIEdBUyBBUkdFTlRJTkEgU0FVIiB+ICJWaXN0YSBPaWwgYW5kIEdhcyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wcmVzYSA9PSAiVklTVEEgT0lMICYgR0FTIEFSR0VOVElOQSBTQSIgfiAiVmlzdGEgT2lsIGFuZCBHYXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHJlc2EgPT0gIlNJTk9QRUMgQVJHRU5USU5BIEVYUExPUkFUSU9OIEFORCBQUk9EVUNUSU9OLCBJTkMuIiB+ICJTaW5vcGVjIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXByZXNhID09ICJURUNQRVRST0wgUy5BLiIgfiAiVGVjcGV0cm9sIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wcmVzYSA9PSAiUExVU1BFVFJPTCBTLkEuIiB+ICJQbHVzcGV0cm9sIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXByZXNhID09ICJQTFVTUEVUUk9MIEVORVJHWSBTLkEuIiB+ICJQbHVzcGV0cm9sIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXByZXNhID09ICJDT01QQcORw41BIEdFTkVSQUwgREUgQ09NQlVTVElCTEVTIFMuQS4iIH4gIkNHQyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wcmVzYSA9PSAiV0lOVEVSU0hBTEwgRU5FUkdJQSBTLkEuIiB+ICJXaW50ZXJzaGFsbCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wcmVzYSA9PSAiWVNVUiBFTkVSR8ONQSBBUkdFTlRJTkEgUy5SLkwuIiB+ICJZU1VSIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXByZXNhID09ICJZU1VSIFBFVFJPTEVSQSBBUkdFTlRJTkEgUy5BLiIgfiAiWVNVUiIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wcmVzYSA9PSAiVE9UQUwgQVVTVFJBTCBTLkEuIiB+ICJUb3RhbCBBdXN0cmFsIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUIH4gZW1wcmVzYSkpICU+JSANCiAgZmlsdGVyKCEoZW1wcmVzYSAlaW4lIGMoIk8mRyBERVZFTE9QTUVOVFMgTFREIFMuQS4iICwiUEVUUk9NSU5FUkEgQ0hVQlVUIFMuRS4iKSkpICU+JQ0KICAjIGZpbHRlcihzdHJfZGV0ZWN0KGNvbmNlcHRvLCAncG96bycpKSAlPiUNCiAgZ3JvdXBfYnkoZW1wcmVzYSwgYW5pbywgdW5pZGFkKSAlPiUgDQogIHN1bW1hcmlzZShpbnZlcnNpb25fYW51YWwgPSBzdW0ocmVhbGl6YWRvX2FudWFsLCBuYS5ybSA9IFQpKSAlPiUgDQogIGFycmFuZ2UoLWludmVyc2lvbl9hbnVhbCkNCmludmVyc2lvbmVzXzIwMDVfMjAxMg0KDQppbnZlcnNpb25lc19hbnVhbCA9IGludmVyc2lvbmVzXzIwMDVfMjAxMiAlPiUgDQogIGZpbHRlcihhbmlvICE9IDIwMTIpICU+JSANCiAgZ3JvdXBfYnkoYW5pbykgJT4lIA0KICBzdW1tYXJpc2UoaW52ZXJzaW9uX2FudWFsID0gc3VtKGludmVyc2lvbl9hbnVhbCkpICU+JSANCiAgcmJpbmQoaW52ZXJzaW9uZXNfYW5pb19hbnRlcmlvciAlPiUgDQogICAgICAgICAgZ3JvdXBfYnkoYW5pbykgJT4lIA0KICAgICAgICAgIHN1bW1hcmlzZShpbnZlcnNpb25fYW51YWwgPSBzdW0oaW52ZXJzaW9uX2V4cGxvdGFjaW9uLCBpbnZlcnNpb25fZXhwbG9yYWNpb24pKSApDQoNCmludmVyc2lvbmVzX2FudWFsICU+JSANCiAgZ2dwbG90KGFlcyhhbmlvLCBpbnZlcnNpb25fYW51YWwpKSsNCiAgZ2VvbV9jb2woKSsNCiAgbGFicyh0aXRsZSA9ICJJbnZlcnNpw7NuIGFudWFsIHRvdGFsIGVuIGVsIHNlY3RvciBoaWRyb2NhcmJ1csOtZmVybyIsIA0KICAgICAgIHkgPSAiTWlsbG9uZXMgZGUgVVNEIiwgeCA9ICJBw7FvIiwgY2FwdGlvbiA9ICJFbGFib3JhY2nDs24gcHJvcGlhIGVuIGJhc2UgYSBTZWNyZXRhcsOtYSBkZSBFbmVyZ8OtYSIpKw0KICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gcm91bmQoc2VxKDAsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heChpbnZlcnNpb25lc19hbnVhbCRpbnZlcnNpb25fYW51YWwpKzEwMDAsIGJ5ID0gMTAwMCkpKSsNCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IHJvdW5kKHNlcShtaW4oaW52ZXJzaW9uZXNfYW51YWwkYW5pbyksIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heChpbnZlcnNpb25lc19hbnVhbCRhbmlvKSwgYnkgPSAxKSkpKw0KdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgdmp1c3QgPSAwLjUsIGhqdXN0PTEpKQ0KDQoNCg0KYGBgDQoNCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQoNCmdyYWZfaW52ZXJzaW9uZXNfMjAwNV8yMDEyIDwtICBpbnZlcnNpb25lc18yMDA1XzIwMTIgJT4lDQogIGdncGxvdChhZXMoYW5pbywgaW52ZXJzaW9uX2FudWFsLCBjb2xvciA9IGVtcHJlc2EpKSsgDQogIGdlb21fbGluZSgpKw0KICBnZW9tX3BvaW50KCkrDQogIGxhYnModGl0bGUgPSAiSW52ZXJzaW9uZXMgcG9yIGVtcHJlc2EgKHRhYmxhcyBkaW5hbWljYXMpIiwNCiAgICAgICBzdWJ0aXRsZSA9ICJFeHRyYcOtZG8gZGUgdGFibGFzIGRpbsOhbWljYXMiLA0KICAgICAgICB5ID0gIk1pbGxvbmVzIGRlIFVTRCIsDQogICAgICAgY2FwdGlvbiA9ICJTZWNyZXRhcmlhIGRlIEVuZXJnw61hIikrDQogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikNCnBsb3RseTo6Z2dwbG90bHkoZ3JhZl9pbnZlcnNpb25lc18yMDA1XzIwMTIpDQoNCmdyYWZfaW52ZXJzaW9uZXNfYW5pb19hbnRlcmlvciA8LSAgaW52ZXJzaW9uZXNfYW5pb19hbnRlcmlvciAlPiUNCiAgZ2dwbG90KGFlcyhhbmlvLCBpbnZlcnNpb25fZXhwbG90YWNpb24sIGNvbG9yID0gZW1wcmVzYSkpKyANCiAgZ2VvbV9saW5lKCkrDQogIGdlb21fcG9pbnQoKSsNCiAgbGFicyh0aXRsZSA9ICJJbnZlcnNpb25lcyBwb3IgZW1wcmVzYSAoYcOxbyBhbnRlcmlvcikiLA0KICAgICAgIHN1YnRpdGxlID0gIkludmVyc2lvbmVzIGHDsW8gYW50ZXJpb3IiLA0KICAgICAgICB5ID0gIk1pbGxvbmVzIGRlIFVTRCIsDQogICAgICAgY2FwdGlvbiA9ICJTZWNyZXRhcmlhIGRlIEVuZXJnw61hIikrDQogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikNCnBsb3RseTo6Z2dwbG90bHkoZ3JhZl9pbnZlcnNpb25lc19hbmlvX2FudGVyaW9yKQ0KDQpgYGANCmBgYHtyfQ0KaW52X2FudWFsX2VtcCA9IGludmVyc2lvbmVzX2FuaW9fYW50ZXJpb3IgJT4lIA0KICBncm91cF9ieShlbXByZXNhLCBhbmlvLCB1bmlkYWQpICU+JSANCiAgc3VtbWFyaXNlKGludmVyc2lvbl9hbnVhbCA9IHN1bShpbnZlcnNpb25fZXhwbG9yYWNpb24sIGludmVyc2lvbl9leHBsb3RhY2lvbikpICU+JSANCiAgcmJpbmQoaW52ZXJzaW9uZXNfMjAwNV8yMDEyKQ0KDQpwbG90X2ludl9hbnVhbCA9IGludl9hbnVhbF9lbXAgJT4lIA0KICBnZ3Bsb3QoYWVzKGFuaW8sIGludmVyc2lvbl9hbnVhbCwgY29sb3IgPSBlbXByZXNhKSkrIA0KICBnZW9tX2xpbmUoKSsNCiAgZ2VvbV9wb2ludCgpKw0KICBsYWJzKHRpdGxlID0gIkludmVyc2lvbmVzIHBvciBlbXByZXNhICh0YWJsYXMgZGluYW1pY2FzKSIsDQogICAgICAgc3VidGl0bGUgPSAiRXh0cmHDrWRvIGRlIHRhYmxhcyBkaW7DoW1pY2FzIiwNCiAgICAgICAgeSA9ICJNaWxsb25lcyBkZSBVU0QiLA0KICAgICAgIGNhcHRpb24gPSAiU2VjcmV0YXJpYSBkZSBFbmVyZ8OtYSIpKw0KICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpDQoNCiMgcGxvdGx5OjpnZ3Bsb3RseShwbG90X2ludl9hbnVhbCkNCnBsb3RfaW52X2FudWFsDQpgYGANCmBgYHtyIH0NCmludl9hbnVhbF9lbXAgJT4lIA0KICB1bmdyb3VwKCkgJT4lIA0KICBmaWx0ZXIoZW1wcmVzYSA9PSAiWVBGIiwgYW5pbyAlaW4lIDIwMDg6MjAxNSkgJT4lIA0KICBzdW1tYXJpc2Uoc3VtKGludmVyc2lvbl9hbnVhbCkpDQpgYGANCg0KDQo=